package com.bilibili.dubbo.api;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bilibili.dubbo.api.db.QuestionApi;
import com.bilibili.dubbo.api.mapper.QuestionMapper;
import com.bilibili.model.db.Question;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * @author HuangRongFu
 * 2021/11/17 星期三9:50 下午
 */

@DubboService
public class QuestionApiImpl implements QuestionApi {

    @Autowired
    private QuestionMapper questionMapper;

    /**
     * 通过用户Id 查询陌生人问题
     *
     * @params: userId
     * @Return: Question
     */
    @Override
    public Question findByUserId(Long userId) {

        QueryWrapper<Question> wrapper = new QueryWrapper<>();
        wrapper.eq("user_id", userId);

        return questionMapper.selectOne(wrapper);
    }

    /**
     * 设置陌生人问题
     *
     * @params: pojo
     */
    @Override
    public void saveQuestions(Question pojo) {

        //这里利用用户id查询 用户在tb_question中的数据 可以获取到id  用户id txt
        Question questionInDb = findByUserId(pojo.getUserId());

        //不为空 存在则更新
        if (questionInDb != null) {

            //用户信息在数据库中不为空 则已经存在 利用查询到的用户信息 设置表中id  对已有问题进行更新
            //!!!注意  更新语句 where 后用的是表中id 不是用户id
            //UPDATE tb_question SET user_id=?, txt=?, updated=? WHERE id=?
            pojo.setId(questionInDb.getId());

            //更新用户问题信息
            questionMapper.updateById(pojo);
        } else {

            //不存在 则新增
            questionMapper.insert(pojo);
        }
    }

    /**
     * 查看陌生人消息
     *
     * @param: userId
     * @Return: ResponseEntity
     */
    @Override
    public String findQuestionByUserId(Long userId) {

        QueryWrapper<Question> qw = new QueryWrapper<>();

        qw.eq("user_id", userId);

        //可以利用三元运算
        Question question = questionMapper.selectOne(qw);
//
//        if (question == null){
//
//            question = new Question();
//
//            question.setUserId(userId);
//            question.setTxt("我喜欢大海,你喜欢吗?");
//        }

        return question == null ? "我喜欢大海,你喜欢吗?" : question.getTxt();
    }
}
